/**
 * Comprehensive list of all possible values that can be passed to `accelerator`
 *
 * @see https://www.electronjs.org/docs/latest/api/accelerator
 */
const ACCELERATOR_POSSIBLE_KEYS = [
	'Command',
	'Cmd', // macOS Command key
	'Control',
	'Ctrl', // Control key
	'ControlOrCommand', // Control or Command key
	'CmdOrCtrl', // Command or Control key
	'Alt',
	'Option', // Alt/Option key
	'AltGr', // Alt Graph key
	'Shift', // Shift key
	'Super',
	'Meta', // Windows/Linux Super key

	'0',
	'1',
	'2',
	'3',
	'4',
	'5',
	'6',
	'7',
	'8',
	'9',

	'A',
	'B',
	'C',
	'D',
	'E',
	'F',
	'G',
	'H',
	'I',
	'J',
	'K',
	'L',
	'M',
	'N',
	'O',
	'P',
	'Q',
	'R',
	'S',
	'T',
	'U',
	'V',
	'W',
	'X',
	'Y',
	'Z',

	'F1',
	'F2',
	'F3',
	'F4',
	'F5',
	'F6',
	'F7',
	'F8',
	'F9',
	'F10',
	'F11',
	'F12',
	'F13',
	'F14',
	'F15',
	'F16',
	'F17',
	'F18',
	'F19',
	'F20',
	'F21',
	'F22',
	'F23',
	'F24',

	')',
	'!',
	'@',
	'#',
	'$',
	'%',
	'^',
	'&',
	'*',
	'(',
	':',
	';',
	'+',
	'=',
	'<',
	',',
	'_',
	'-',
	'>',
	'.',
	'?',
	'/',
	'~',
	'`',
	'{',
	']',
	'[',
	'|',
	'\\',
	'}',
	'"',
	// TODO: Not sure if ' is allowed, see https://github.com/electron/electron/pull/47508/files
	"'",

	'Plus',
	'Space',
	'Tab',
	'Capslock',
	'Numlock',
	'Scrolllock',
	'Backspace',
	'Delete',
	'Insert',
	'Return',
	'Enter',
	'Up',
	'Down',
	'Left',
	'Right',
	'Home',
	'End',
	'PageUp',
	'PageDown',
	'Escape',
	'Esc',
	'VolumeUp',
	'VolumeDown',
	'VolumeMute',
	'MediaNextTrack',
	'MediaPreviousTrack',
	'MediaStop',
	'MediaPlayPause',
	'PrintScreen',

	'num0',
	'num1',
	'num2',
	'num3',
	'num4',
	'num5',
	'num6',
	'num7',
	'num8',
	'num9',
	'numdec',
	'numadd',
	'numsub',
	'nummult',
	'numdiv',
] as const;

export type AcceleratorPossibleKey = (typeof ACCELERATOR_POSSIBLE_KEYS)[number];
